/*
 * @Author: 橘子
 * @Project_description: 微信公众号
 * @Description: 代码是我抄的，不会也是真的
 */
'use strict'

import qs from "qs"

/**
 * @description 验证是否是微信环境
 * @return {boolean}
 */
const isWxMp = () => {
    let ua = window.navigator.userAgent.toLowerCase()
    return ua.match(/micromessenger/i) == 'micromessenger'

}

/**
 * @description 获取当前window的地址
 * @return {String} 当前window的地址
 */
const getWindowUrl= () => {
    let name = window.location.pathname.replace('/index.html', '')
    return  window.location.origin + name
}

/**
 * @description 微信公众号登录
 * @return {void} 无返回值
 * @param appid {string} 公众号appid
 * @param router {string} 跳转页面
 * @param [params] {object} 携带参数
 */
const login = (appid, router, params = {}) => {
    let redirect_uri = getWindowUrl() +'/index.html#/'+ router
    const query = {
        appid: appid,
        redirect_uri,
        response_type: 'code',
        scope: 'snsapi_userinfo',  //snsapi_userinfo
        state: params,
    }
    window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?' + qs.stringify(query) + '#wechat_redirect'
}

/**
 * @description 获取url中的参数
 * @return {string|null} 无返回值
 * @param name {string} 参数名
 */
const getParam = (name = 'code') => {
    // 未传参，返回空
    if (!name) return null
    // 查询参数：先通过search取值，如果取不到就通过hash来取
    let after = window.location.search
    after = after.substr(1) || window.location.hash.split('?')[1]
    // 地址栏URL没有查询参数，返回空
    if (!after) return null
    // 如果查询参数中没有"name"，返回空
    if (after.indexOf(name) === -1) return null
    let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')
    // 当地址栏参数存在中文时，需要解码，不然会乱码
    let r = decodeURI(after).match(reg)
    // 如果url中"name"没有值，返回空
    if (!r) return null
    return r[2]
}


export default {
    isWxMp,
    getWindowUrl,
    login,
    getParam,
}
